package com.stackoverflow

class UsuarioController {

	static layout = "usuario"
	
	def usuarioService
	
	def postagemService

	def index() {

		if(session.usuario){

			redirect action: "questoes"
		} else {

			redirect action: "login"
		}
	}

	def login(){
	}

	def doLogin(){

		def usuario = usuarioService.logar(params)

		if(usuario){

			session.usuario = usuario
			flash.message = "Bem vindo"
			redirect action: "index"

			return
		}

		flash.errors = "Não foi possível autenticar"
		redirect action: "login"
	}

	def criar(){

		
	}
	
	def doCriar(){
		
		if(params.password != params.repeat){
			
			flash.errors = "As senhas estão diferentes!"
			render view: "criar", model: [usuario: params]
			return 
		}
		
		def usuario = usuarioService.salvarUsuario(params)

		if(usuario.hasErrors()){
			flash.errors = "Usuário não pode ser salvo"
			usuario.errors.getFieldErrors().each {
				flash.errors += it.getDefaultMessage()
			}
			render view: "criar", model: [usuario: params]
			return
		}
		
		flash.message = "Registro efetuado com suacesso. Faça login"
		
		redirect action: "login"
	}

	def postar(){

		def usuario = Usuario.get(1)

		def postagem = new Questao()

		postagem.dataCriacao = new Date()
		postagem.titulo = "Nova Postagem"
		postagem.texto = "Postagem de teste em "+postagem.dataCriacao

		usuario.addToPostagens(postagem)

		usuario.save(flush: true)

		render usuario.postagens
	}
	
	def questoes(){
		
		def questoes = postagemService.getQuestoesByUsuario(session.usuario)
		
		[usuario: session.usuario, questoes: questoes]
	}

	def historico(Long id){

		def usuario = Usuario.get(id)

		def retorno = "<h2>Postagens</h2>"

		def postagens = usuario.postagens.sort{it.dataCriacao}.reverse()

		retorno += postagens.collect{"<h4>Postagem: <br><i>"+it.texto+"</i></h4> <br>Em: "+it.dataCriacao}.join()

		render retorno
	}
}
